require.config({
    baseUrl:"./modules",
    paths:{
        jq:"../libs/jquery",
        gd:"getData",
        rc:"randerCart",
        cl:"changeLocal",
        an:"allNum",
        ap:"allPrice"
    }
})

require(["jq","gd","rc","cl","an","ap"],function(_,gd,rc,cl,allNum,ap){

    //获取本地存储数据
    let goods = localStorage.getItem("goods")?JSON.parse(localStorage.getItem("goods")):[];
    //判断购物车是否有数据，没有显示默认样式
    if(goods.length){
        $(".kong").css({display:"none"});
        $(".goodslist").css({display:"block"});
    }
    
    $("#goodsNum").html(goods.length);
    goods.forEach(val => {
        gd({
            data:{
                type:"getDetail",
                id:val.id
            },
            success:res=>{
                rc($("tbody"),res,val)
            }
        })
    });
    //绑定事件
    $("tbody").on("change",".check",function(){
        const f = this.checked;
        const id = $(this).parent().parent().attr("index");
        cl(goods,id,function(i){
            goods[i].flag = Number(f);
        })

        $("#allCheck")[0].checked = goods.every(val=>val.flag);

        // 计算总数量
        $("#allNum").html(allNum(goods));

        // 计算总价
        $("#allPrice").html(ap(goods).toFixed(2));
    })
    // 修改数量 -减
    $("tbody").on("click",".reduce",function(){
        const id = $(this).parent().parent().parent().attr("index");
        const num = Number($(this).next().html())-1;   
        let price = 0; 
        $(this).next().html(num)
        cl(goods,id,function(i){
            goods[i].num = num;
            price=(goods[i].seles*goods[i].num).toFixed(2);
        })
        //数量为0时，删除该商品
        if(!num){
            $(this).parent().parent().parent().remove();
            //删除本地存储中对应商品
            cl(goods,id,function(i){
                goods.splice(i, 1);
            })
            
        }
        $(this).parent().parent().parent().find(".price").html(price)
        
        // 计算总数量
        $("#allNum").html(allNum(goods));

        // 计算总价
        $("#allPrice").html(ap(goods).toFixed(2));
        //判断购物车是否有数据，没有显示默认样式
        if(!goods.length){
            $(".kong").css({display:"block"});
            $(".goodslist").css({display:"none"});
        }
        $("#goodsNum").html(goods.length);
        return false;
    })
    // ---加
    $("tbody").on("click",".plus",function(){
        const id = $(this).parent().parent().parent().attr("index");
        const num = Number($(this).prev().html())+1;
        let price;
        //设置单个商品价格
        $(this).prev().html(num);
        cl(goods,id,function(i){
            goods[i].num = num;
            price=(goods[i].seles*goods[i].num).toFixed(2)
        })
        $(this).parent().parent().parent().find(".price").html(price);

        // 计算总数量
        $("#allNum").html(allNum(goods));

        // 计算总价
        $("#allPrice").html(ap(goods).toFixed(2));
        return false;
    })

    //删除商品
    $("tbody").on("click",".del",function(){
        const id = $(this).parent().parent().attr("index");
        $(this).parent().parent().remove()
        cl(goods,id,function(i){
            goods.splice(i, 1);
        })

        // 根据单个选中决定是否全选
        $("#allCheck")[0].checked = goods.every(val=>val.flag);

        // 计算总数量
        $("#allNum").html(allNum(goods));

        // 计算总价
        $("#allPrice").html(ap(goods).toFixed(2));

        //判断购物车是否有数据，没有显示默认样式
        if(!goods.length){
            $(".kong").css({display:"block"});
            $(".goodslist").css({display:"none"});
        }
        $("#goodsNum").html(goods.length);
    })
    // 绑定全选事件
    $("#allCheck").change(function(){
        // 修改所有的复选框的选中状态
        for(let i=0;i<$(".check").length;i++){
            $(".check")[i].checked = this.checked;
        }

        localStorage.setItem("goods",JSON.stringify(goods.map(val=>{
            val.flag = Number(this.checked)
            return val;
        })))

        // 计算总数量
        $("#allNum").html(allNum(goods));

        // 计算总价
        $("#allPrice").html(ap(goods).toFixed(2));
    })

    // 根据单个选中决定是否全选
    $("#allCheck")[0].checked = goods.every(val=>val.flag);

    $("#allNum").html(allNum(goods));

    $("#allPrice").html(ap(goods).toFixed(2));

    // 绑定删除选中的事件
    $("#delFlag").click(function(){
        // 从程序中删除商品
        goods = goods.filter(val=>{
            return !val.flag;
        })
        // 从本地数据中删除商品
        localStorage.setItem("goods",JSON.stringify(goods))
        $.each($(".check"),(idx,val)=>{
            if(val.checked){
                val.parentNode.parentNode.remove()
            }
        })

        //判断购物车是否有数据，没有显示默认样式
        if(!goods.length){
            $(".kong").css({display:"block"});
            $(".goodslist").css({display:"none"});
        }
        $("#goodsNum").html(goods.length);


        $("#allNum").html(allNum(goods));

        // 计算总价
        $("#allPrice").html(ap(goods).toFixed(2));

        
    })
   


    
})